1.14.4 后端事件抄送
1. 简介
当E聊后端触发了特定的事件后,可以以事件抄送的方式(发起一个POST请求)将该事件通知到业务系统上. 交互流程如下:
2. 事件抄送配置
2.1 配置抄送地址的请求格式与返回格式
使用前业务后台需要在事件推送系统设置抄送接受地址URL, token等参数. 推送设置地址为: http://{部署 域名或IP}/v1/event_push
请求格式:
参数 名 | 说明 | 样例 |
---|---|---|
appid | 配置的app_id, 推送系统会根据该app_id识别是否同一个应 用 | my_app |
url | 回调url, 推送系统会向当前URL发送GET请求进行绑定,发送 POST请求进行事件抄送 | http://localhost/event_callback |
token | 该字段由业务系统生成,用于计算参数签名用,最大长度不 超过32字节 | 6wKBhXw1y |
curl 请求格式举例:
curl -H "Content-Type:application/json" -X POST -d '{"appid": "my_app":
"http://localhost/event_callback, "token": "random_key"}' 'http://{部署域名或
IP}/v1/event_push/config'
收到来自事件推送系统的回调的返回格式:
参数名 | 说明 | 样例 |
---|---|---|
nonce | 通知id, 每次请求都不唯 一,可用来做API去重 | 1648093550 |
timestamp | API发送的时间戳 | 1647511153 |
msg_signature | 消息签名, 签名计算方法见 下方文档 | 3CB4357FE5A607654C97DEA9C949C18F |
POST_BODY | 从接收消息的URL中获取的 整个post数据 | 这里数据存储在http body中,以json格式组 织, 参考事件消息格式一节 |
收到来自事件推送系统的回调举例:
POST /event_callback?
msg_signature=3CB4357FE5A607654C97DEA9C949C18F×tamp=1409659813&nonce=137262
3149 HTTP/1.1
Host: locahost
Content-Length: 364
{
"toappid": "my_app",
"body": "{}",
"msgType": "event",
"event": "BROADCAST_CLIENT_LOGIN"
}
3. 消息签名原理(msg_signature)
3.1 计算签名的算法
- 计算签名:
sort的含义是将参数值按照字母字典排序,然后从小到大拼接成一个字符串 md5处理结果要使用32位大写的加密方式dev_msg_signature=md5(sort(token、timestamp、nonce、msg_encrypt))
- 比较dev_msg_signature和msg_signature是否相等,相等则表示验证通过
4. 事件消息格式
事件推送系统的事件会以特定的事件消息格式来进行推送,消息格式定义如下:
参数名 | 说明 | 样例 |
---|---|---|
toappid | 业务系统设定的appid | my_app |
createTime | 消息创建时间戳(整型) | 1647511153 |
msgType | 消息类型,此时固定为: event | event |
event | 事件类型 | 事件类型 |
body | json格式具体业务正文 | {"errno":"", "msg":""} |
现事件类型有以下几种:
- BROADCAST_CLIENT_OFFLINE_MESSAGE("转发消息时客户端离线");
- BROADCAST_SEND_MESSAGE("客户端发消息")
- BROADCAST_CLIENT_LOGIN("客户端登录消息")
- BROADCAST_CLIENT_LOGOUT("客户端登出消息")
- BROADCAST_CLIENT_ONLINE("客户端在线消息")
- BROADCAST_CLIENT_OFFLINE("客户端掉线消息")